package cn.gson.crm.model.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import cn.gson.crm.model.entity.Project;
import cn.gson.crm.model.entity.ProjectLeader;
import cn.gson.crm.model.entity.ProjectMembers;
import cn.gson.crm.model.entity.ProjectPlan;
import cn.gson.crm.model.entity.ProjectResource;
import cn.gson.crm.model.entity.Student;
/**
 * 项目Mapper
 * @author Lenovo
 *
 */
@Mapper
public interface ProjectMapper {
	/**
	 * 查询所有项目名称
	 * @param project
	 * @return
	 */
	List<Project> findAllProject(Project project);
	
	
	/**
	 * 查询所有项目组长
	 * @param project
	 * @return
	 */
	List<ProjectLeader> findAllLeader(@Param("id")Long id);
	
	
	/**
	 * 查询所有项目成员
	 * @param project
	 * @return
	 */
	List<ProjectMembers> findAllMembers(@Param("id")Long id);
	/**
	 * 根据学员ID查询已完成项目
	 * @param id
	 * @return
	 */
	List<Map<String,Object>> FindProjectByStudentId(Long id);
	
	/**
	 * 根据学员ID查询未完成项目
	 * @param id
	 * @return
	 */
	List<Map<String,Object>> FindProjectByStudentIdNo(@Param("id")Long id);
	/**
	 * 查询班级学生
	 * @param id
	 * @return
	 */
	List<Map<String, Object>> findstudent(@Param("id")Long id);
	/**
	 * 根据班级id查询所有学生
	 * @param id
	 * @return
	 */
	List<Long> findstudentId(@Param("cid")Long cid,@Param("pid")Long pid);
	/**
	 * 根据项目id查学生id
	 * @param id
	 * @return
	 */
	List<Long> findleader(@Param("id")Long id);
	/**
	 * 根据组长id查学生id
	 * @param id
	 * @return
	 */
	List<Long> findmembersId(@Param("id")Long id);
	
	
	/**
	 * 查询所有学生
	 * @param id
	 * @return
	 */
	Student findAllstudent(@Param("id")Long id);
	
	/**
	 * 查询组长是否存在
	 * @param id
	 * @return
	 */
	int leaderCount(@Param("student")Long id,@Param("project")Long pid);
	/**
	 * 查询当前班级是否在做项目
	 * @param id
	 * @return
	 */
	int countproject(@Param("classes")Long id);
	
	/**
	 * 查询当前班级是否做过该项目
	 * @param id
	 * @param title
	 * @return
	 */
	int countTitle(@Param("classes")Long id,@Param("title")String title);
	
	/**
	 * 根据ID查询项目计划名
	 * @param id
	 * @return
	 */
	List<ProjectPlan> findProjectPlanById(@Param("student")Long id);
	
	/**
	 * 根据周数和id查看项目计划内容
	 * @param id
	 * @return
	 */
	List<ProjectPlan> findProjectPlanContentByIdAndZhou(@Param("buildTime")String zhou,@Param("student")Long id);
	
	/**
	 * 查询所有项目计划
	 * @return
	 */
	List<ProjectPlan> findAllPlan(Map<String, Object> m);
	
	/**
	 * 查询所有的项目资料
	 * @param resource
	 * @return
	 */                  
	List<ProjectResource> findAllProjectResource(@Param("project")Long id);
	
	/**
	 * 根据学生ID查询组长名称
	 */
	List<ProjectLeader> findAllLeaderByStuID(Long id);
	
	/**
	 * 判断当前登录用户是否是组长
	 */
	List<ProjectLeader> isLeader(Long id);
	
	/**
	 * 如果当前登录用户不是组长，则根据组员id查询组长
	 */
	ProjectMembers findLeaderByMemberId(Long id);
	
	/**
	 * 修改项目计划
	 * @param id
	 * @return
	 */
	ProjectPlan updatePlan(ProjectPlan plan);
	
}
